package com.jinzecloud.reportapproval.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jinzecloud.reportapproval.bean.RoleUserEntity;
import com.jinzecloud.reportapproval.vo.RoleUserVO;
import com.jinzecloud.reportapproval.vo.RoleVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;


/**
 * 角色 用户 dao
 */
@Mapper
public interface RoleUserMapper extends BaseMapper<RoleUserEntity> {

    /**
     * 根据员工id 查询所有的角色
     */
    List<RoleVO> selectRoleUserId(@Param("userId") Long userId);

    /**
     * 根据员工id 查询所有的角色io集合
     */
    List<Long> selectRoleIdByUserId(@Param("userId") Long userId);

    /**
     * 根据员工id 查询所有的角色
     */
    List<RoleUserEntity> selectRoleIdByUserIdList(@Param("userIdList") List<Long> userIdList);

    /**
     * 根据员工id 查询所有的角色
     */
    List<RoleUserVO> selectRoleByUserIdList(@Param("UserIdList") List<Long> employeeIdList);

    /**
     * 查询角色下的人员id
     */
    List<Long> selectUserIdByRoleIdList(@Param("roleIdList") List<Long> roleIdList);


    /**
     *
     */
//    List<EmployeeVO> selectEmployeeByRoleId(@Param("roleId") Long roleId);
    /**
     * 根据员工信息删除
     */
    void deleteByUserId(@Param("userId") Long userId);

    /**
     * 删除某个角色的所有关系
     */
    void deleteByRoleId(@Param("roleId")Long roleId);

    /**
     * 根据用户和 角色删除关系
     */
    void deleteByUserIdRoleId(@Param("userId") Long employeeId,@Param("roleId")Long roleId);

    /**
     * 批量删除某个角色下的某批用户的关联关系
     */
    void batchDeleteUserRole(@Param("roleId") Long roleId,@Param("userIds")List<Long> employeeIds);
}
